package com.hemerasolutions.v2trainer.component.interfaces.detail;

import java.util.List;

import javax.faces.event.ValueChangeEvent;

import com.hemerasolutions.v2trainer.component.interfaces.BaseComponentInterface;
import com.hemerasolutions.v2trainer.component.interfaces.list.IntensityZoneListCompInterface;
import com.hemerasolutions.v2trainer.component.interfaces.list.PhotosListCompInterface;
import com.hemerasolutions.v2trainer.component.interfaces.list.VideosListCompInterface;
import com.hemerasolutions.v2trainer.component.interfaces.table.EquipmentTableCompInterface;
import com.hemerasolutions.v2trainer.delegate.interfaces.ExerciseDetailDelegateInterface;
import com.hemerasolutions.v2trainer.model.exercise.Exercise;
import com.hemerasolutions.v2trainer.model.exercise.ExerciseMuscle;
import com.hemerasolutions.v2trainer.model.exercise.VersionableExercise;
import com.hemerasolutions.v2trainer.model.modality.Modality;
import com.hemerasolutions.v2trainer.model.muscle.BodyRegion;
import com.hemerasolutions.v2trainer.model.muscle.Muscle;
import com.hemerasolutions.v2trainer.model.muscle.MuscleGroup;

public interface ExerciseDetailsCompInterface extends BaseComponentInterface {

	public abstract void setMusclePrimary(boolean musclePrimary);

	public abstract boolean isMusclePrimary();

	public abstract void setExerciseMuscle(ExerciseMuscle exerciseMuscle);

	public abstract ExerciseMuscle getExerciseMuscle();

	public abstract void setMuscle(Muscle muscle);

	public abstract Muscle getMuscle();

	public abstract void setSelMuscle(Muscle selMuscle);

	public abstract Muscle getSelMuscle();

	public abstract void setSelMuscleGroup(MuscleGroup selMuscleGroup);

	public abstract MuscleGroup getSelMuscleGroup();

	public abstract void setSelBodyRegion(BodyRegion selBodyRegion);

	public abstract BodyRegion getSelBodyRegion();

	public abstract void setMuscles(List<Muscle> muscles);

	public abstract List<Muscle> getMuscles();

	public abstract void setMuscleGroups(List<MuscleGroup> muscleGroups);

	public abstract List<MuscleGroup> getMuscleGroups();

	public abstract void setBodyRegions(List<BodyRegion> bodyRegions);

	public abstract List<BodyRegion> getBodyRegions();

	public abstract void setModality(Modality modality);

	public abstract Modality getModality();

	public abstract void setExercise(Exercise exercise);

	public abstract Exercise getExercise();

	public abstract void setExercises(List<Exercise> exercises);

	public abstract List<Exercise> getExercises();

	public abstract void setEquipmentTable(EquipmentTableCompInterface equipmentTable);

	public abstract EquipmentTableCompInterface getEquipmentTable();

	public abstract void setPhotosListHandler(PhotosListCompInterface photosListHandler);

	public abstract PhotosListCompInterface getPhotosListHandler();

	public abstract void setVideosListHandler(VideosListCompInterface videosListHandler);

	public abstract VideosListCompInterface getVideosListHandler();

	public abstract void changeAllExerciseExecutions(org.primefaces.event.ToggleSelectEvent ev);

	public abstract void addMuscle();

	public abstract void handleMuscleGroupChange();

	public abstract void handleBodyRegionChange();

	public abstract void deleteMuscle();

	public abstract void refresh();

	public abstract void init();

	public abstract IntensityZoneListCompInterface getIzList();

	public abstract void setIzList(IntensityZoneListCompInterface izList);

	public abstract Exercise getSelectedVersion();

	public abstract void setSelectedVersion(Exercise selectedVersion);

	public abstract	VersionableExercise getVersionableExercise();

	public abstract	void setVersionableExercise(VersionableExercise versionableExercise);

	public abstract	void onVersionChanged(ValueChangeEvent e);

	public void newExerciseVersion();

	public void saveExercise();

	public ExerciseDetailDelegateInterface getDelegate();

	public void setDelegate(ExerciseDetailDelegateInterface delegate);

}
